feat(desktop): add GitHub Copilot CLI harness - #6829
Conversation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Nathan Lutz <me@nathanlutz.dev>
Chessing234
left a comment
There was a problem hiding this comment.
registering copilot through its native --acp stdio mode rather than a third-party adapter is the right call, and the doc comment explaining why session/new + models is the readiness probe (no non-interactive status command, side-effect free) is the kind of note that stops someone "simplifying" it later.
a few things:
the avatar is the only unpinned one in the table.
const COPILOT_CLI_AVATAR_URL: &str = "https://github.com/github.png";goose, claude code and codex all point at versioned CDN paths. this one is a redirect off github.com itself, resolved per render, so the harness catalog now makes a request to github.com whenever it draws that row — and it renders whatever github decides that avatar should be. avatars.githubusercontent.com/u/9919?s=200&v=4 is the stable form, or bundle it like the buzz-agent asset.
the auth probe's cost claim is an assumption about someone else's billing. "without spending a premium request" is true today and isn't something this repo can hold true. if copilot ever meters session/new or models, buzz starts silently consuming a user's quota every time the agents pane refreshes readiness. worth noting how often the probe runs (per catalog render? per app start? cached?) so the blast radius is visible if that assumption breaks — the cache is mentioned in the summary but the interval isn't.
Err(_) => AuthStatus::Unknown throws away the reason. the success-with-nonzero-exit path carefully classifies stderr into LoggedOut / ConfigInvalid with a diagnostic; the spawn-failure path collapses to Unknown with nothing recorded. "copilot isn't on PATH" and "copilot exists but exec failed" both land there, and the user gets an indeterminate state with no hint. even a tracing::debug! with the error would make it supportable.
the validation is windows-only. cargo check --target x86_64-pc-windows-msvc is the only compile listed, and cli_install_commands_windows is empty alongside cli_install_commands. common_binary_paths() and resolve_command are where a new runtime usually goes wrong per-platform (homebrew prefix on apple silicon vs intel, ~/.local/bin on linux), and none of that is exercised. a cargo check on at least one unix target, or a line saying CI covers it, would close that.
smaller: adapter_install_instructions_url: "" and adapter_install_hint: "" are empty strings rather than None while the neighbouring mcp_command and skill_dir use None/Option. worth checking the catalog ui doesn't render an empty "instructions" link for this row — an empty string is a value, and if url.is_empty() is easy to forget where if let Some(url) isn't.
and the VISION.md capitalisation change (goose, codex, claude code → title case) is unrelated to the feature. correct, but it's a second thing in the diff and it'll conflict with anything else touching that table.
Pin the GitHub avatar URL, document auth probe caching, log probe startup failures, and remove unrelated capitalization churn. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Nathan Lutz <nathanlutz@microsoft.com>
Summary - register GitHub Copilot CLI as a built-in ACP harness with official installation and login guidance - launch Copilot through its native
--acpstdio mode while preserving required ACP arguments for custom configurations - surface model capabilities and authenticated readiness through Buzz's existing catalog, cache, and provider UI - add runtime, frontend, mock catalog, and screenshot coverage ## Validation -cargo check --target x86_64-pc-windows-msvc --manifest-path desktop/src-tauri/Cargo.toml --tests-node --test src/features/agents/ui/personaRuntimeModel.test.mjs-pnpm exec tsc --noEmit-pnpm exec biome check src/features/agents/ui/personaRuntimeModel.ts src/testing/e2eBridge.ts tests/e2e/harness-catalog-screenshots.spec.ts-pnpm build:e2e-pnpm exec playwright test tests/e2e/harness-catalog-screenshots.spec.ts --project=smoke- direct ACP initialize/session smoke test against GitHub Copilot CLI 1.0.81-9 Closes #3592Screenshot